package com.itheima.aop;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * @author wuJiaWei
 * @version 1.0
 */
@Order(1)
@Slf4j
@Component // 交给springIOC容器管理,成为ioc容器中的bean对象
@Aspect // 标识当前类是一个切面类
public class TimeAspect {
    /**
     * 记录方法执行耗时
     * @param proceedingJoinPoint api调用原始方法
     * @throws Throwable 异常
     */
    @Around("com.itheima.aop.MyAspect1.pt()")// 切入点表达式
    public Object recordTime(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        log.info("方法名：{}",proceedingJoinPoint.getSignature());
        // 记录方法执行开始时间
        long start = System.currentTimeMillis();
        // 调用原始方法
        Object proceed = proceedingJoinPoint.proceed();
        // 记录结束时间
        long end = System.currentTimeMillis();
        log.info(proceedingJoinPoint.getSignature()+"方法执行耗时：" + (end - start));
        return proceed;
    }
}
